1. Technical Field
The present invention is related generally to intelligent network adapters. Specifically, the present invention is directed toward the state recovery and failover of a network offload engine.
2. Description of Related Art
In an Internet Protocol (IP) Network, the software provides a message passing mechanism that can be used to communicate with Input/Output devices, general purpose computers (host), and special purpose computers. IP networks generally employ what is known as a “protocol stack” to encapsulate and transmit data using a series of protocols. A typical protocol stack following the Open System Interconnection (OSI) architectural model includes a link layer protocol, a network layer protocol, a transport protocol, an upper level protocol, and an application programming interface. The key standard transport protocols used on IP networks today are the Transmission Control Protocol (TCP) and the User Datagram Protocol (UDP). TCP provides a reliable service and UDP provides an unreliable service. In the future the Stream Control Transmission Protocol (SCTP) will also be used to provide a reliable service. Processes executing on devices or computers access the IP network through Upper Level Protocols, such as Sockets, iSCSI, and Direct Access File System (DAFS).
Unfortunately the TCP/IP software consumes a considerable amount of processor and memory resources. This problem has been covered extensively in the literature (see J. Kay, J. Pasquale, “Profiling and reducing processing overheads in TCP/IP”, IEEE/ACM Transactions on Networking, Vol 4, No. 6, pp. 817–828, December 1996; and D. D. Clark, V. Jacobson, J. Romkey, H. Salwen, “An analysis of TCP processing overhead”, IEEE Communications Magazine, volume: 27, Issue: 6, June 1989, pp 23–29). In the future the network stack will continue to consume excessive resources for several reasons, including: increased use of networking by applications; use of network security protocols; and the underlying fabric bandwidths are increasing at a higher rate than microprocessor and memory bandwidths. To address this problem the industry is offloading the network stack processing to a dedicated network offload engine.
Today, software in the host CPU generally performs most of the transport (e.g., TCP) and network layer (e.g., IP) processing. Today, the network interface card (NIC) typically performs the link layer (e.g., Ethernet) processing and possibly a modest amount of transport or network layer offload (e.g., checksum offload). Today, the host software maintains all the state information associated with TCP/IP connections in host local memory. Keeping all the state information in host local memory allows the host software to support switchover, and switchback, between a primary NIC and an alternate NIC. That is, if the primary NIC fails, the host software moves all the connections to the alternate NIC and continues communication processing.
Network offload engines offer a higher performance interface for communicating to other general purpose computers and I/O devices. Network offload engines offload the transport (e.g., TCP) and network (e.g., IP) layer into the network offload engine. By migrating these layers into the network offload engine, the host software is no longer able to support switchover and switchback using today's mechanisms. Commonly assigned and copending U.S. patent application Ser. No. 10/235,691, entitled “REMOTE DIRECT MEMORY ACCESS ENABLED NETWORK INTERFACE CONTROLLER SWITCHOVER AND SWITCHBACK SUPPORT,” which is incorporated herein by reference, provides a mechanism for supporting switchover and switchback on a network offload engine (specifically, an RNIC, an RDMA (Remote Direct Memory Access) Network Interface Card). This approach relies on the synchronization of state information between the active and standby network offload engines. This synchronization, however, can become a performance bottleneck at high speeds, because in order to ensure correctness, some protocol events must be checkpointed (that is, reconciled or synchronized between the active and standby network offload engines) as soon as they occur. In addition, the mechanism described in U.S. patent application Ser. No. 10/235,691 is specific to network interfaces supporting RDMA. Thus, what is needed is a failover mechanism of general application that minimizes the performance degradation associated with synchronizing the host with the adapter.